package com.zjl.springmvc.controller.xxxBody;

import com.zjl.springmvc.bean.Pet;
import com.zjl.springmvc.bean.User;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * @RestController 注解是springMVC提供的一个复合注解，
 *                 标识在控制器的类上，就相当于为类添加了
 * @Controller 注解，并且为其中的每个方法添加了@ResponseBody注解
 */
@RestController// ==  @Controller+@ResponseBody
public class responseBodyController {
    /**
     * 会给前端自动返回JSON数据!利用返回值处理器里面的消息转换器进行处理
     * 需要导包 开启mvc注解驱动(spring boot 自带)
     * 将Java对象直接作为控制器方法的返回值返回，
     * 就会自动转换为Json格式的字符串
     *
     *  导入 .xml 的依赖  如过有这个 前端返回的就是xml格式了
     *
     *  默认是json格式
     */
    @ResponseBody//可以在类上加 相当与给所有方法加
    @GetMapping("/responseBody")
    public User responseBody(){
        User user = new User();
        user.setAge(23);
        user.setName("周杰伦");
        user.setPet(new Pet("宠物",60.5));
        return user;
    }

    @GetMapping("/responseBody0")
    public void responseBody0(HttpServletResponse response) throws IOException {
        response.getWriter().print("responseBody");
    }

    /**
     * 7、ResponseEntity
     * ResponseEntity用于控制器方法的返回值类型，
     *    该控制器方法的返回值就是响应到浏览器的响应报文
     * 详情见  文件这个包
     *
     */
}
